package com.atguigu.es.repository;

import com.atguigu.es.vo.User;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List;

//用来操作Elasticsearch的接口
//这里的泛型必须写，User表示操作索引的bean，Long表示该索引主键的数据类型
//可以将它理解为mapper
public interface UserRepository extends ElasticsearchRepository<User,Long> {

    //模板方法，我们自己创建的方法,和mybatis-plus很像
    List<User> findBySalaryBetween(Double from,Double to);//查询工资区间，模板方法

    List<User> findByUsernameLike(String username);//模糊查询，模板方法

    //我们自己用DSL语句写的方法，不是模板方法
    //这个注解里面写的我们的DSL语句
    @Query("{\n" +
            "\"bool\":{\n" +
            "\"must\":[\n" +
            "{\n" +
            "\"range\":{\n" +
            "\"salary\":{\n" +
            "\"gte\": ?0,\n" +
            "\"lte\": ?1\n" +
            "}\n" +
            "}\n" +
            "}\n" +
            "]\n" +
            "}\n" +
            "}")// ?0:使用方法的第一个参数  ?1:使用方法的第二个参数
    List<User> qUsersBySalary(Double from,Double to);//查询工资区间



}
